home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / commontex / h / math < prev    next >
Encoding:
Text File  |  1988-04-08  |  4.0 KB  |  159 lines

  1. /*
  2.  *    Copyright 1986, 1987 Pat Joseph Monardo. All rights reserved.
  3.  *    Copying of this file is granted according to the provisions 
  4.  *    specified in the file COPYING which must accompany this file.
  5.  */
  6.  
  7.  
  8. /*
  9.  *        math.h
  10.  */
  11.  
  12. ptr    new_style();
  13.  
  14. #define    STYLE_NODE                (UNSET_NODE + 1)
  15. #define    STYLE_NODE_SIZE            3
  16. #define    DISPLAY_STYLE            0
  17. #define    TEXT_STYLE                2
  18. #define    SCRIPT_STYLE            4
  19. #define    SCRIPT_SCRIPT_STYLE        6
  20. #define    CRAMPED                    1
  21.  
  22. ptr    new_choice();
  23.  
  24. #define    CHOICE_NODE                (UNSET_NODE + 2)
  25. #define    display_mlist(C)        info(C + 1)
  26. #define    text_mlist(C)            link(C + 1)
  27. #define    script_mlist(C)            info(C + 2)
  28. #define    script_script_mlist(C)    link(C + 2)
  29.  
  30. ptr    new_noad();
  31.  
  32. #define    NOAD_SIZE            4
  33. #define    nucleus(N)            (N + 1)
  34. #define    supscr(N)            (N + 2)
  35. #define    subscr(N)            (N + 3)
  36. #define    fam                    font
  37. #define    math_type            link
  38.  
  39. #define    ORD_NOAD            (UNSET_NODE + 3)
  40. #define    OP_NOAD                (ORD_NOAD + 1)
  41. #define    BIN_NOAD            (ORD_NOAD + 2)
  42. #define    REL_NOAD            (ORD_NOAD + 3)
  43. #define    OPEN_NOAD            (ORD_NOAD + 4)
  44. #define    CLOSE_NOAD            (ORD_NOAD + 5)
  45. #define    PUNCT_NOAD            (ORD_NOAD + 6)
  46. #define    INNER_NOAD            (ORD_NOAD + 7)
  47.  
  48. #define    MATH_CHAR            1
  49. #define    SUB_BOX                2
  50. #define    SUB_MLIST            3
  51. #define    MATH_TEXT_CHAR        4
  52.  
  53. #define    LIMITS                1
  54. #define    NO_LIMITS            2
  55.  
  56. #define    left_delimiter(D)    (D + 4)
  57. #define    right_delimiter(D)    (D + 5)
  58.  
  59. #define    small_fam(D)        mem[D].qqqq.b0
  60. #define    small_char(D)        mem[D].qqqq.b1
  61. #define    large_fam(D)        mem[D].qqqq.b2
  62. #define    large_char(D)        mem[D].qqqq.b3
  63.  
  64. #define    RADICAL_NOAD        (INNER_NOAD + 1)
  65. #define    RADICAL_NOAD_SIZE    5
  66. #define    FRACTION_NOAD        (RADICAL_NOAD + 1)
  67. #define    FRACTION_NOAD_SIZE    6
  68. #define    DEFAULT_CODE        010000000000
  69. #define    thickness            width
  70. #define    numerator            supscr
  71. #define    denominator            subscr
  72.  
  73. #define    null_delimiter        null_character
  74.  
  75. global    twoh    empty_field;
  76.  
  77. #define    UNDER_NOAD            (FRACTION_NOAD + 1)
  78. #define    OVER_NOAD            (UNDER_NOAD + 1)
  79. #define    ACCENT_NOAD            (OVER_NOAD + 1)
  80. #define    ACCENT_NOAD_SIZE    5
  81. #define    accent_chr(A)        (A + 4)
  82. #define    VCENTER_NOAD        (ACCENT_NOAD + 1)
  83. #define    LEFT_NOAD            (VCENTER_NOAD + 1)
  84. #define    RIGHT_NOAD            (LEFT_NOAD + 1)
  85. #define    delimiter            nucleus    
  86.  
  87. #define    scripts_allowed(N)    (type(N) >= ORD_NOAD && type(N) < LEFT_NOAD)
  88.  
  89. int        print_fam_and_char();
  90. int        print_delimiter();
  91. int        print_subsidiary_data();
  92. int        print_style();
  93. int        print_size();
  94.  
  95. #define    TEXT_SIZE            0
  96. #define    SCRIPT_SIZE            16
  97. #define    SCRIPT_SCRIPT_SIZE    32
  98.  
  99. int        show_normal_noad();
  100. int        show_fraction_noad();
  101.  
  102. #define    mathsy(F, P) \
  103.     font_info[param_base[fam_fnt(2 + F)] + P].sc
  104.  
  105. #define    math_x_height(F)    mathsy(F, 5)
  106. #define    math_quad(F)        mathsy(F, 6)
  107. #define    num1(F)                mathsy(F, 8)
  108. #define    num2(F)                mathsy(F, 9)
  109. #define    num3(F)                mathsy(F, 10)
  110. #define    denom1(F)            mathsy(F, 11)
  111. #define    denom2(F)            mathsy(F, 12)
  112. #define    sup1(F)                mathsy(F, 13)
  113. #define    sup2(F)                mathsy(F, 14)
  114. #define    sup3(F)                mathsy(F, 15)
  115. #define    sub1(F)                mathsy(F, 16)
  116. #define    sub2(F)                mathsy(F, 17)
  117. #define    sup_drop(F)            mathsy(F, 18)
  118. #define    sub_drop(F)            mathsy(F, 19)
  119. #define    delim1(F)            mathsy(F, 20)
  120. #define    delim2(F)            mathsy(F, 21)
  121. #define    axis_height(F)        mathsy(F, 22)
  122.  
  123. #define    TOTAL_MATHSY_PARAMS    22
  124.  
  125. #define    mathex(P) \
  126.     font_info[param_base[fam_fnt(3 + cur_size)] + P].sc
  127.  
  128. #define    default_rule_thickness    mathex(8)
  129. #define    big_op_spacing1            mathex(9)
  130. #define    big_op_spacing2            mathex(10)
  131. #define    big_op_spacing3            mathex(11)
  132. #define    big_op_spacing4            mathex(12)
  133. #define    big_op_spacing5            mathex(13)
  134.  
  135. #define    TOTAL_MATHEX_PARAMS    13
  136.  
  137. #define    cramped_style(S)    2 * (S / 2) + CRAMPED
  138. #define    sub_style(S)        2 * (S / 4) + SCRIPT_STYLE + CRAMPED
  139. #define    sup_style(S)        2 * (S / 4) + SCRIPT_STYLE + (S % 2)
  140. #define    num_style(S)        S + 2 - 2 * (S / 6)
  141. #define    denom_style(S)        2 * (S / 2) + CRAMPED + 2 - 2 * (S / 6)
  142.  
  143. #define change_size_and_mu() \
  144.     {if (cur_style < SCRIPT_STYLE) \
  145.         cur_size = TEXT_SIZE; \
  146.     else cur_size = 16 * ((cur_style - TEXT_STYLE) / 2); \
  147.     cur_mu = x_over_n(math_quad(cur_size), 18L);}
  148.  
  149. ptr        fraction_rule();
  150. ptr        overbar();
  151. ptr        var_delimiter();
  152. int        stack_into_box();
  153. scal    height_plus_depth();
  154. ptr        char_box();
  155. ptr        rebox();
  156. ptr        math_glue();
  157. int        math_kern();
  158. int        flush_math();
  159.